In the past, a database management system (hereinafter, referred to as a DBMS) is located in the central of the business information system. The DBMS stores data to be processed in a storage and performs highly reliable processing represented by transaction processing on the stored data. There is high demand for a data processing system for processing a large volume of data arriving continuously, in real time. For example, in the case of a financial application supporting stock transactions, the ability to quickly respond to a change in stock prices is of considerable importance. In a system that first stores stock data in a storage and retrieves the stored data as in a DBMS of the related art, an operation of storing and subsequently retrieving data may not keep up with the speed of stock price changes, and thus trading opportunities may be lost. For example, U.S. Pat. No. 5,495,600 discloses a mechanism for periodically executing stored queries. It, however, is important for the mechanism to immediately execute the queries upon arrival of data such as stock prices. That is, since a discrepancy between a query execution period and data processing timing is not allowable, it is difficult to apply the mechanism to real-time data processing represented by the above-described financial application. An approach for individually creating various real-time applications using a programming language represented by Java® is time consuming and costly, is unable to make rapid adaptation to changes in business practices that uses the applications, and requires a general-purpose real-time data processing mechanism.
As a data processing system suitable for such real time data processing, a stream data processing system has been proposed. For example, a stream data processing system STREAM is disclosed in “Query Processing, Resource Management, and Approximation in a Data Stream Management System” written by R. Motwani, J. Widom, A. Arasu, B. Babcock, S. Babu, M. Datar, G. Manku, C. Olston, J. Rosenstein, and R. Varma, in Proc. of the 2003 Conf. on Innovative Data Systems Research (CIDR), January 2003.
Unlike a DBMS of the related art, the stream data processing system first registers a query and continuously executes the query upon arrival of data. Here, the stream data is not single large, logically continuous data like a video stream, but relatively small and logically independent large-volume time-series data, such as stock price transfer data in a financial application, POS data in retail business, probe car data in a traffic information system, error log data in computer system management, sensing data generated from a ubiquitous device, such as a sensor or an RFID, and the like. Since the stream data continuously arrives at the system, process initiation after waiting for an end of the data makes real-time processing impossible. Data arriving at the system needs to be processed in order of arrival without being affected by the load of data processing. The STREAM introduces a concept called a sliding window (hereinafter, referred to as a window) to process the stream data continuously arriving at the system, in real time, while partially cutting out the stream data with a designated time width such as the last 10 minutes, or a designated a number of records such as the last 1,000 records. A typical example of a descriptive language for a query including a window designation may include Continuous Query Language (CQL) disclosed in the above-described document written by R. Motwani et al. CQL has an extension designating the window by using square brackets following a stream name in a FROM phrase of Structured Query Language (SQL), which is widely used by the DBMS. Details of SQL are written in “A Guide to SQL Standard (4th Edition)” written by C. J. Date, Hugh Darwen, Addison-Wesley Professional; 4 Edition (Nov. 8, 1996), ISBN 0201964260.
Query 1201 in FIG. 12 is an example of a query of CQL shown in Chapter 2.1 of the above-described document written by R. Motwani, et al. In the query, a web proxy server calculates the total number of accesses per day, measured back from the present time, from a domain stanford.edu. “Requests” are web access data continuously arriving at the web proxy server and are not static data such as a table used by a DBMS of the related art but seamless stream data. Therefore, the total number of accesses cannot be calculated without designating a certain part of stream data as a target by a window designation “[Range 1 Day Preceding]”. Stream data cut by the window is held in a memory and used for query processing. Representative window designation methods include a Range window for designating a window width in terms of time and a Row window for designating a window width in terms of the number of data. For example, when [Range 10 minutes] is set using the Range window, the last 10 minutes are set as a target for query processing. When [Rows 10] is set using the Row window, the last 10 records are set as a target for query processing.
It is expected that the stream data processing system will be applied to financial applications, sales monitoring of retail businesses, traffic information systems, and applications requiring real-time processing by computer system management. Hereinafter, applications requiring real-time processing are referred to as real-time applications. In a real-time application, a ranking calculation is crucial to extract important information from huge amounts of data. For example, in a financial application, ranking information about certain stocks that exhibit large changes in price or transaction amount is important. In sales monitoring of retail businesses, ranking information focused on sales quantities and rankings of various shops and products is needed. In traffic information systems, ranking information focused on areas of high traffic and congestion is needed. Also in computer system management, ranking information for adding the priority of a management target such as the number of serious errors, the number of accesses, etc. is essential.
When target data for the ranking calculation is static, that is, data to be ranked is not changed, data may be sorted by a key for ranking (hereinafter, referred to as a ranking key), and data may be output according to ranks of sorting results. For example, when ranking information of the top ten best selling stocks stored in a database is calculated, the sales of each stock for the day are counted and the results that sales of each stock are counted as a ranking key are sorted such that the top ten cases may be selected and output. A method of automatically determining a ranking key (sales in the above-described example) from a query input by a user is disclosed in U.S. Pat. No. 7,251,648. A method of reducing the cost of surplus data processing by adding a condition upon query processing when only first n rows are designated to be output by a query of the DBMS is disclosed in U.S. Laid-Open Patent Application No. 2006/0259457. In the above-described SQL, a “GROUP BY” phrase for classifying stocks, an aggregate function SUM for calculating total sales, and an “ORDER BY” phrase for executing sorting based on a count value are provided. By combining these, ranking calculation results may be generated in descending order (or ascending order) of sales from stock transaction data stored in a database on a daily basis.
However, since new data (stream data) continuously arrives in the above-described real-time application, it is difficult for the data to be static. When a real-time application dedicated ranking calculation is carried out using the DBMS, it is necessary to store data in the DBMS whenever stream data arrives and process the above-described classification, counting, and sorting in the DBMS. This processing is costly since it is basically necessary to access large volumes of data in the database. Thus, when stream data generated from the real-time application arrives at high speed, that is, when a time interval in which the stream data arrives is short, it is impossible to complete processing within the time interval and thus is difficult to perform the real-time application dedicated ranking calculation using the DBMS.
As described above, in the stream data processing system, a target to be processed is processed by cutting the target from infinitely continuous stream data by the above-described window. Since only data in the window is targeted for processing, other data extracted from the window needs to be deleted from the data targeted for ranking processing. The timing of extracting data from the window differs according to whether the window designation method is based on time (the above-described Range window) or number of records (the above-described Row window). If the number of records is designated, the timing of extracting data targeted for processing from the window is not determined immediately when the data is input to the window, but rather by subsequent stream data. On the other hand, if there is a time designation, the timing of extracting data targeted for processing from the window may be determined immediately when the data is input to the window, but deletion timing (timing of extraction from the window) is not synchronized with subsequent data.
Whenever the stream data is inserted into the window in the ranking calculation, the consistency of ranking information needs to be maintained by executing the ranking calculation. In addition, even when data from the window disappears, the consistency of ranking information also needs to be maintained. Specifically, when the window is designated by time, the ranking calculation needs to be executed in consideration of the disappearance timing of data from the window, not in synchronization with arrival of subsequent data.
For processing efficiency, the ranking calculation must conform to the constraint of real-time processing, an important purpose of the stream data processing system. Since the stream data processing system is based on general-purpose data processing, it is necessary to provide a general-purpose interface and processing mechanism to realize processing by the interface that respond to requests of applications to pass only difference information of ranking calculation results, to pass entire ranking calculation results, and to include rank information in the ranking calculation results. So far, no ranking calculation method dedicated for a stream data processing system capable of meeting the above needs has been implemented.